/**
 * Created by Dell on 2017/4/26.
 */
const article = require('../models/article');
const log = require('log4js').getLogger('article');
const systemlogs = require('../models/systemlogs');
/**
 * 后台添加文章
 * @param req
 * @param res
 */
exports.add = function(req, res){
    const args = req.body;
    let user = req.user;
    if(!args.title){
        return res.send({success:false,data:'请给文章添加个标题吧!'});
    }
    if(!args.content){
        return res.send({success:false,data:'您的文章还没有内容呢！'});
    }
    if(!args.imgurl){
        return res.send({success:false,data:'请给您的文章加个美美哒配图吧！'});
    }
    if(!args.abstract){
        return res.send({success:false,data:'请给您的文章添加一条摘要！'});
    }
    let address = args.address;
    let location={};
    location.lat=args.lat;
    location.lng=args.lng;
    let point ={
        address,
        location
    };
    const params = [
        args.title,//文章标题
        req.user.id,//作者id
        new Date(),//创建时间
        1,//文章状态
        args.content,//文章内容
        args.imgurl,//文章配图
        req.user.username,//作者名字
        args.abstract,//文章摘要
        0,//想要数量
        1,//拥有数量
        1,//未删除
        args.address?point:null
    ];
    article.add(params, args, user, function(err,result){//去models执行sql语句
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'exit_title'){
            return res.send({success:false,data:'很抱歉，您添加的文章标题已经存在，请更换标题'});
        }else if(result == 'fail'){
        }else {
            return res.send({success:true,data:'恭喜您，您添加的标题为 <<'+args.title+'>> 的文章成功'});
        }
    });
};
/**
 * 后台多条件查询文章列表
 * @param req
 * @param res
 */
exports.list_b = function(req, res){
    // let date = new Date();
    // let nowYear = date.getFullYear();
    // let nowMonth = date.getMonth() + 1;  //注意getMonth从0开始
    // let nowDay = date.getDate();
    // let d1=nowYear + ',' + nowMonth + ',' + nowDay ;   //将当前日期的年月日整合到d中
    // let d2=new Date(new Date(d1).getTime() - 86400000);   //将当前日期的年月日整合到d中
    // let d3=new Date(new Date(d1).getTime() - (86400000*2));   //将当前日期的年月日整合到d中
    // let d4=new Date(new Date(d1).getTime() - (86400000*7));   //将当前日期的年月日整合到d中
    // let d5=new Date(new Date(d1).getTime() - (86400000*30));   //将当前日期的年月日整合到d中
    // let date1 = new Date(d1);   //获取当日00：00：00的标准时间
    // let date2 = new Date(d2);   //获取昨日00：00：00的标准时间
    // let date3 = new Date(d3);   //获取前天00：00：00的标准时间
    // let date4 = new Date(d4);   //获取一周前00：00：00的标准时间
    // let date5 = new Date(d5);   //获取30天前00：00：00的标准时间
    const args = req.query;
    const limit = Number(args.limit);
    const page = Number(args.page);
    let params = [];
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    }
    if(!page){
        return res.send({success:false,data:'请选择您当前处于的页数'});
    }
    if(args.keyword){
        params.push('%'+args.keyword+'%');//根据关键字模糊查询
    }
    // if(args.createtime == 'new'){
    //     params.push(date2),//昨日新增
    //         params.push(date1)//当日新增
    // }
    // if(args.createtime == 'yesterday'){
    //     params.push(date3),//前天新增
    //         params.push(date2)//昨天新增
    // }
    // if(args.createtime == 'weak'){
    //     params.push(date4),//一周新增
    //         params.push(date1)//当日新增
    // }
    // if(args.createtime == 'month'){
    //     params.push(date5),//30天新增
    //         params.push(date1)//当日新增
    // }
    params.push(1);//未删除
    params.push(limit);
    params.push(limit*(page-1));//从第几条开始
    article.list_b(params, args, function(err,result){//去models执行sql
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows});
        }
    });
};
/**
 * 后台多条件查询文章列表数据统计
 * @param req
 * @param res
 */
exports.count_b = function(req, res){
    // let date = new Date();
    // let nowYear = date.getFullYear();
    // let nowMonth = date.getMonth() + 1;  //注意getMonth从0开始
    // let nowDay = date.getDate();
    // let d1=nowYear + ',' + nowMonth + ',' + nowDay ;   //将当前日期的年月日整合到d中
    // let d2=new Date(new Date(d1).getTime() - 86400000);   //将当前日期的年月日整合到d中
    // let d3=new Date(new Date(d1).getTime() - (86400000*2));   //将当前日期的年月日整合到d中
    // let d4=new Date(new Date(d1).getTime() - (86400000*7));   //将当前日期的年月日整合到d中
    // let d5=new Date(new Date(d1).getTime() - (86400000*30));   //将当前日期的年月日整合到d中
    // let date1 = new Date(d1);   //获取当日00：00：00的标准时间
    // let date2 = new Date(d2);   //获取昨日00：00：00的标准时间
    // let date3 = new Date(d3);   //获取前天00：00：00的标准时间
    // let date4 = new Date(d4);   //获取一周前00：00：00的标准时间
    // let date5 = new Date(d5);   //获取30天前00：00：00的标准时间
    const args = req.query;
    let params = [];
    if(args.keyword){
        params.push('%'+args.keyword+'%');//根据关键字模糊查询
    }
    // if(args.createtime == 'new'){
    //     params.push(date2),//昨日新增
    //         params.push(date1)//当日新增
    // }
    // if(args.createtime == 'yesterday'){
    //     params.push(date3),//前天新增
    //         params.push(date2)//昨天新增
    // }
    // if(args.createtime == 'weak'){
    //     params.push(date4),//一周新增
    //         params.push(date1)//当日新增
    // }
    // if(args.createtime == 'month'){
    //     params.push(date5),//30天新增
    //         params.push(date1)//当日新增
    // }
    params.push(1);
    article.count_b(params, args, function(err,result){//去models执行sql
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rowCount});//处理数据
        }
    });
};
/**
 * 后台批量编辑文章状态
 * @param req
 * @param res
 */
exports.upd_status = function(req, res){
    const args = req.body;
    if(!args.ids){//要编辑的分类的id的数组集合
        return res.send({succeaa:false,data:'请至少选择一张文章，进行编辑！'});
    }
    if(!args.status){//要编辑成的状态
        return res.send({success:false,data:'请选择状态进行编辑！'});
    }
    if(args.ids.constructor != Array){//编辑的分类id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要编辑的文章id！'});
    }
    article.upd_status(args, function(err,result){
        if(err){//报错
            return res.send({success:false,data:err});
        }else if(result.rowCount == 0){//失败
            return res.send({success:false,data:'很遗憾，您编辑文章状态失败！'});
        }else {
            let desc = req.user.username+'修改了一批文章的状态';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                8
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'恭喜您，编辑文章状态成功！'});
        }
    });
};
/**
 * 后台文章链接（详情）
 * @param req
 * @param res
 */
exports.info = function(req, res){
    const args = req.query;
    if(!args.articleid){
        return res.send({success:false,data:'请选择要查看的文章'});
    }
    const params = [
        args.articleid,
        1,
        1
    ];
    article.info(params, args, function(err, result){//去models执行操作
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null'){
            return res.send({success:false,data:'您选择的文章不可用'});
        }else {
            return res.send({success:true,data:result});//返回详情
        }
    })
};

/**
 * app 用户想要图片
 * @param req
 * @param res
 */
exports.want = function(req, res){
    const args = req.body;
    if(!args.articleid){
        return res.send({success:false,data:'请选择您想要的文章'});
    }
    const params = [
        args.articleid,//文章id
        req.user.id,//用户id
        2,
        new Date()
    ];
    article.want(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_article'){
            return res.send({success:false,fata:'没有该文章请再次确认'});
        }else if(result == 'exit_logs'){
            return res.send({success:false,fata:'您已经对该文章添加想要，请不要重复添加'});
        }else if(result == null){
            return res.send({success:false,fata:'添加想要失败，请重试'});
        }else {
            return res.send({success:true,data:'恭喜您，对文章添加想要成功',info:result});
        }
    })
};

/**
 * app 用户添加拥有图片
 * @param req
 * @param res
 */
exports.own = function(req, res){
    const args = req.body;
    if(!args.articleid){
        return res.send({success:false,data:'请选择您想要的文章'});
    }
    const params = [
        args.articleid,//图片id
        req.user.id,//用户id
        2,
        new Date()
    ];
    article.own(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_article'){
            return res.send({success:false,fata:'没有该文章请再次确认'});
        }else if(result == 'exit_logs'){
            return res.send({success:false,fata:'您已经对该文章添加拥有，请不要重复添加'});
        }else if(result == null){
            return res.send({success:false,fata:'添加拥有失败，请重试'});
        }else {
            return res.send({success:true,data:'恭喜您，对文章添加拥有成功',info:result});
        }
    });
};

/**
 * app 用户想要图片
 * @param req
 * @param res
 */
exports.unwant = function(req, res){
    const args = req.body;
    if(!args.articleid){
        return res.send({success:false,data:'请选择您取消想要的文章'});
    }
    const params = [
        args.articleid,//文章id
        req.user.id,//用户id
        2
    ];
    article.unwant(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,fata:'没有该文章请再次确认'});
        }else if(result == 'null_logs'){
            return res.send({success:false,fata:'您尚未对该文章添加想要'});
        }else if(result == null){
            return res.send({success:false,fata:'取消想要失败，请重试'});
        }else {
            return res.send({success:true,data:'取消想要成功',info:result});
        }
    })
};

/**
 * app 用户添加拥有文章
 * @param req
 * @param res
 */
exports.unown = function(req, res){
    const args = req.body;
    if(!args.articleid){
        return res.send({success:false,data:'请选择您取消拥有的文章'});
    }
    const params = [
        args.articleid,//文章id
        req.user.id,//用户id
        2
    ];
    article.unown(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,fata:'没有该文章请再次确认'});
        }else if(result == 'null_logs'){
            return res.send({success:false,fata:'您尚未对该文章添加拥有'});
        }else if(result == null){
            return res.send({success:false,fata:'取消拥有失败，请重试'});
        }else {
            return res.send({success:true,data:'取消拥有成功',info:result});
        }
    })
};
/**
 * 后台批量删除文章
 * @param req
 * @param res
 */
exports.remove = function(req, res){
    const args = req.body;
    if(!args.ids){
        return res.send({success:false,data:'请至少选择一篇文章进行删除'})
    };
    if(args.ids.constructor != Array){//删除的文章id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要删除的文章id！'});
    };
    article.remove(args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'exit_del'){
            return res.send({success:false,data:'您删除的文章中，存在不可用文章'});
        }else {
            let desc = req.user.username+'删除了一批文章';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                8
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'删除文章成功'});
        }
    });
};
/**
 * app 查看文章列表（时间倒序排列）
 * @param req
 * @param res
 */
exports.list_app = function(req, res){
    const args = req.query;
    const limit = Number(args.limit);
    const page = Number(args.page);
    let params = [];
    if(!limit){
        return res.send({success:false,data:'请选择每页显示的条数'});
    }
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    }
    if(args.userid){
        params.push(args.userid);
    }
    if(args.aid){
        params.push(args.aid);
    }
    params.push(1); //状态
    params.push(1); //未删除
    params.push(limit); //每页条数
    params.push((page-1)*limit); //从第几条开始

    article.list_app(params, args, function(err, result){//去models执行操作
        if(err){//报错
            return res.send({success:false,data:err});
        }else {//返回信息
            return res.send({success:true,data:result});
        }
    });
};
/**
 * app 文章数量
 * @param req
 * @param res
 */
exports.count_app = function(req, res){
    const params = [
        1, //正常
        1//未删除
    ];
    article.count_app(params, function(err, result){//去models执行sql语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else {
            return res.send({success:true,data:result.rows[0].count});//文章数量
        }
    });
};
/**
 * app 查看文章列表（时间倒序排列）
 * @param req
 * @param res
 */
exports.others = function(req, res){
    const args = req.query;
    let params = [];
    if(!args.aid){
        return res.send({success:false,data:'请选择文章'});
    }
    params.push(args.aid);
    params.push(1); //状态
    params.push(1); //未删除
    article.others(params, args, req, function(err, result){//去models执行操作
        if(err){//报错
            return res.send({success:false,data:err});
        }else {//返回信息
            return res.send({success:true,data:result});
        }
    });
};
/**
 * app 文章数量
 * @param req
 * @param res
 */
exports.count_app = function(req, res){
    const params = [
        1, //正常
        1//未删除
    ];
    article.count_app(params, function(err, result){//去models执行sql语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else {
            return res.send({success:true,data:result.rows[0].count});//文章数量
        }
    });
};
